package com.wlr.study.leetcode;

import java.util.Stack;

/**
 * 给定一个只包括 '('，')'，'{'，'}'，'['，']' 的字符串 s ，判断字符串是否有效。
 * <p>
 * 有效字符串需满足：
 * <p>
 * 左括号必须用相同类型的右括号闭合。
 * 左括号必须以正确的顺序闭合。
 * 每个右括号都有一个对应的相同类型的左括号。
 * @author lerong.wang
 * @version 1.0.0
 * @description
 * @date 2024/12/17 09:38
 */
public class LeetCode20 {

    public boolean isValid(String s) {
        char[] charArray = s.toCharArray();
        if (charArray.length%2 != 0) return false;
        Stack<Character> leftStack = new Stack<>();
        Stack<Character> rightStack = new Stack<>();
        for (char c : charArray) {
            if (c == '(') {
                rightStack.push(')');
            } else if (c == '{') {
                rightStack.push('}');
            } else if (c == '[') {
                rightStack.push(']');
            } else if (rightStack.isEmpty() || rightStack.peek() != c) {
                return false;
            } else {
                rightStack.pop();
            }
        }
        return rightStack.empty();
    }

    public static void main(String[] args) {
        LeetCode20 leetCode20 = new LeetCode20();
        System.out.println(leetCode20.isValid("()[]{}"));
    }
}